package com.ddxz.hetong.service;

import com.ddxz.tool.web.dto.DdxzResponse;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * interface description
 *
 * @author 贾书虫
 * @version 1.0.0
 * @date 2022/8/1
 */

public interface ElectricityService {
    /**
     * 获取全部收入
     * @param year 年份
     * @param month 月份
     * @param factory 发电厂名称
     * @param type 粒度
     * @return 列表
     */
    DdxzResponse getAllImport(Integer year, Integer month, String factory, Integer type);

    /**
     * 获取详情数据
     * @param year 年份
     * @param month 月份
     * @param factory 发电厂名称
     * @param name 财务项名称
     * @param pageNum 页码
     * @param pageSize 页码大小
     * @return 列表
     */
    DdxzResponse getdetail(Integer year, Integer month, String factory, List<String> name, Integer pageNum, Integer pageSize);

    /**
     * 获取name指定的各项指标，可以指定多个指标
     * @param year 年份
     * @param month 月份
     * @param factory 发电厂名称
     * @param name 统计指标名称
     * @param type 粒度
     * @return 列表
     */
    DdxzResponse getStatistic(Integer year, Integer month, String factory, List<String> name, Integer type);

    /**
     * 获取获取所有成本的统计值
     * @param year 年份
     * @param month 月份
     * @param factory 发电厂名称
     * @param type 粒度
     * @return 列表
     */
    DdxzResponse getAllCost(Integer year, Integer month, String factory, Integer type);

    /**
     * 获取获取燃料成本之外的成本统计值
     * @param year 年份
     * @param month 月份
     * @param factory 发电厂名称
     * @param type 粒度
     * @return 列表
     */
    DdxzResponse getExceptCost(Integer year, Integer month, String factory, Integer type);

    /**
     * 导入Excel中数据，导入数据会清空原指定年份的数据
     * @param file excel文件
     * @param year 年份
     * @param type
     * @return 是否导入成功
     */
    DdxzResponse importExcel(MultipartFile file, Integer year, Integer type);

    /**
     * 对比利润与装机容量
     * @param year 年份
     * @param type 粒度
     * @return 列表
     */
    DdxzResponse compare(Integer year, Integer type);

    /**
     * 对比阶段指标
     * @param year 年份
     * @param type 粒度
     * @param stage 阶段
     * @return 列表
     */
    DdxzResponse history(Integer year, Integer type, Integer stage);

    /**
     * 盈利能力
     * @param type 类型
     * @param year 年份
     * @return 列表
     */
    DdxzResponse profitability(Integer type, Integer year);

    /**
     * 偿债能力
     * @param type 类型
     * @param year 年份
     * @return 列表
     */
    DdxzResponse solvency(Integer type, Integer year);

    /**
     * 获利能力
     * @param type 类型
     * @param year 年份
     * @return 列表
     */
    DdxzResponse earning(Integer type, Integer year);

    /**
     * 获利利润分布
     * @param type 类型
     * @param year 年份
     * @return 列表
     */
    DdxzResponse profit(Integer type, Integer year);

    /**
     * 下载指定的模板文件
     * @param type 1 利润成本模板；2 能力指标模板
     * @param response 下载流
     */
    void downloadTemplate(Integer type, HttpServletResponse response);

    /**
     * 获取指定年份下的成本占比Top5，燃料成本除外
     * @param year 年份
     * @return 列表
     */
    DdxzResponse costTop5(Integer year);
}
